﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- Documenting T:NAnt.Core.Tasks.LoopTask-->
  <head>
    <meta http-equiv="Content-Language" content="en-ca" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="../style.css" />
    <title>&lt;foreach&gt; Task</title>
  </head>
  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar">
      <tr>
        <td class="NavBar-Cell">
          <a href="http://nant.sourceforge.net">
            <b>NAnt</b>
          </a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../index.html">Help</a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../tasks/index.html">Task Reference</a>
          <img alt="-&gt;" src="../images/arrow.gif" /> &lt;foreach&gt;</td>
        <td class="NavBar-Cell" align="right">
                        v0.85</td>
      </tr>
    </table>
    <h1>&lt;foreach&gt;</h1>
    <p> Loops over a set of items. </p>
    <p> Can loop over files in directory, lines in a file, etc. </p>
    <p> The property value is stored before the loop is done, and restored when the loop is finished. </p>
    <p> The property is returned to its normal value once it is used. Read-only parameters cannot be overridden in this loop. </p>
    <h3>Parameters</h3>
    <div class="table">
      <table>
        <tr>
          <th>Attribute</th>
          <th style="text-align: center;">Type</th>
          <th>Description</th>
          <th style="text-align: center;">Required</th>
        </tr>
        <tr>
          <td valign="top" class="required">item</td>
          <td style="text-align: center;">
            <a href="../enums/NAnt.Core.Tasks.LoopTask.LoopItem.html">LoopItem</a>
          </td>
          <td> The type of iteration that should be done. </td>
          <td style="text-align: center;">True</td>
        </tr>
        <tr>
          <td valign="top" class="required">property</td>
          <td style="text-align: center;">string</td>
          <td> The NAnt property name(s) that should be used for the current iterated item. </td>
          <td style="text-align: center;">True</td>
        </tr>
        <tr>
          <td valign="top">delim</td>
          <td style="text-align: center;">string</td>
          <td> The deliminator char. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">in</td>
          <td style="text-align: center;">string</td>
          <td> The source of the iteration. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">trim</td>
          <td style="text-align: center;">
            <a href="../enums/NAnt.Core.Tasks.LoopTask.LoopTrim.html">LoopTrim</a>
          </td>
          <td> The type of whitespace trimming that should be done. The default is <code>None</code>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">failonerror</td>
          <td style="text-align: center;">bool</td>
          <td> Determines if task failure stops the build, or is just reported. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">if</td>
          <td style="text-align: center;">bool</td>
          <td> If <b>true</b> then the task will be executed; otherwise, skipped. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">unless</td>
          <td style="text-align: center;">bool</td>
          <td> Opposite of <code>if</code>. If <b>false</b> then the task will be executed; otherwise, skipped. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">verbose</td>
          <td style="text-align: center;">bool</td>
          <td> Determines whether the task should report detailed build log messages. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
      </table>
    </div>
    <h3>Nested Elements:</h3>
    <!--Element-->
    <h4>
      <a id="in">
      </a>
                    &lt;in&gt;
                </h4>
    <div class="nested-element"> Stuff to operate in. Just like the <code>in</code> attribute, but supports more complicated things like a <a href="../types/fileset.html">&lt;fileset&gt;</a> and such. <p class="i2"><b>Note:</b>  Please remove the <code>in</code> attribute if you are using this element. </p><p></p><h3>Nested Elements:</h3><!--Element--><h4><a id="items"></a>
                    &lt;<a href="../types/fileset.html">items</a>&gt;
                </h4><div class="nested-element"><p /></div><h4><a id="items"></a>
                    &lt;/<a href="../types/fileset.html">items</a>&gt;
                </h4><p /></div>
    <h4>
      <a id="in">
      </a>
                    &lt;/in&gt;
                </h4>
    <!--Element-->
    <h4>
      <a id="do">
      </a>
                    &lt;do&gt;
                </h4>
    <div class="nested-element"> Tasks to execute for each matching item. <p> Executes embedded tasks in the order in which they are defined. </p><h3>Parameters</h3><div class="table"><table><tr><th>Attribute</th><th style="text-align: center;">Type</th><th>Description</th><th style="text-align: center;">Required</th></tr><tr><td valign="top">failonerror</td><td style="text-align: center;">bool</td><td> Determines if task failure stops the build, or is just reported. The default is <b>true</b>. </td><td style="text-align: center;">False</td></tr><tr><td valign="top">if</td><td style="text-align: center;">bool</td><td> If <b>true</b> then the task will be executed; otherwise, skipped. The default is <b>true</b>. </td><td style="text-align: center;">False</td></tr><tr><td valign="top">unless</td><td style="text-align: center;">bool</td><td> Opposite of <code>if</code>. If <b>false</b> then the task will be executed; otherwise, skipped. The default is <b>false</b>. </td><td style="text-align: center;">False</td></tr><tr><td valign="top">verbose</td><td style="text-align: center;">bool</td><td> Determines whether the task should report detailed build log messages. The default is <b>false</b>. </td><td style="text-align: center;">False</td></tr></table></div><p /></div>
    <h4>
      <a id="do">
      </a>
                    &lt;/do&gt;
                </h4>
    <h3>Examples</h3>
    <ul class="examples">
      <li>
        <p>Loops over the files in <code>c:\</code>.</p>
        <pre class="code">
&lt;foreach item="File" in="c:\" property="filename"&gt;
    &lt;echo message="${filename}" /&gt;
&lt;/foreach&gt;
    </pre>
      </li>
      <li>
        <p>Loops over all files in the project directory.</p>
        <pre class="code">
&lt;foreach item="File" property="filename"&gt;
    &lt;in&gt;
        &lt;items&gt;
            &lt;include name="**" /&gt;
        &lt;/items&gt;
    &lt;/in&gt;
    &lt;do&gt;
        &lt;echo message="${filename}" /&gt;
    &lt;/do&gt;
&lt;/foreach&gt;
    </pre>
      </li>
      <li>
        <p>Loops over the folders in <code>c:\</code>.</p>
        <pre class="code">
&lt;foreach item="Folder" in="c:\" property="foldername"&gt;
    &lt;echo message="${foldername}" /&gt;
&lt;/foreach&gt;
    </pre>
      </li>
      <li>
        <p>Loops over all folders in the project directory.</p>
        <pre class="code">
&lt;foreach item="Folder" property="foldername"&gt;
    &lt;in&gt;
        &lt;items&gt;
            &lt;include name="**" /&gt;
        &lt;/items&gt;
    &lt;/in&gt;
    &lt;do&gt;
        &lt;echo message="${foldername}" /&gt;
    &lt;/do&gt;
&lt;/foreach&gt;
    </pre>
      </li>
      <li>
        <p>Loops over a list.</p>
        <pre class="code">
&lt;foreach item="String" in="1 2,3" delim=" ," property="count"&gt;
    &lt;echo message="${count}" /&gt;
&lt;/foreach&gt;
    </pre>
      </li>
      <li>
        <p> Loops over lines in the file <code>properties.csv</code>, where each line is of the format name,value. </p>
        <pre class="code">
&lt;foreach item="Line" in="properties.csv" delim="," property="x,y"&gt;
    &lt;echo message="Read pair ${x}=${y}" /&gt;
&lt;/foreach&gt;
    </pre>
      </li>
    </ul>
    <h3>Requirements</h3>
    <div style="margin-left: 20px;">
      <b>Assembly:</b> NAnt.Core (0.85.2478.0)
            </div>
  </body>
</html>